t = int(input())
for _ in range(t):
a,b = map(int,input().split())
if a == b:
print(0,0)
continue
m = abs(a-b)
if a%m==0:
print(m,0)
else:
x = m-(a%m)
y = a-((a//m)*m)
print(m,min(x,y))
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll t;
cin>>t;
while(t--)
{
ll x,y;
cin>>x>>y;
if(x==y){
cout<<"0"<<" "<<"0"<<endl;
continue;
}
else
{
ll a=abs(x-y);
ll b=x%a;
ll c=y%a;
if(b!=c)
{
cout<<"0"<<" "<<"0"<<endl;
}
else
{
ll ans=min(a-b,b);
cout<<a<<" "<<ans<<endl;
}
}
}
}
714B - Filya and Homework | 31A - Worms Evolution |
1691A - Beat The Odds | 433B - Kuriyama Mirai's Stones |
892A - Greed | 32A - Reconnaissance |
1236D - Alice and the Doll | 1207B - Square Filling |
1676D - X-Sum | 1679A - AvtoBus |
1549A - Gregor and Cryptography | 918C - The Monster |
4B - Before an Exam | 545B - Equidistant String |
1244C - The Football Season | 1696B - NIT Destroys the Universe |
1674A - Number Transformation | 1244E - Minimizing Difference |
1688A - Cirno's Perfect Bitmasks Classroom | 219A - k-String |
952A - Quirky Quantifiers | 451B - Sort the Array |
1505H - L BREAK into program | 171E - MYSTERIOUS LANGUAGE |
630D - Hexagons | 1690D - Black and White Stripe |
1688D - The Enchanted Forest | 1674C - Infinite Replacement |
712A - Memory and Crow | 1676C - Most Similar Words |